/**
 * Definition for singly-linked list.
 * function ListNode(val, next) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.next = (next===undefined ? null : next)
 * }
 */
/**
 * @param {ListNode} head
 * @return {ListNode}
 */
var reverseList = function(head) {
    //先判断head是否为空，如果为空则直接返回head
    if(!head) return head
    //定义一个指针记录我们操作对象要指向的上一个对象
    let per = null
    //定义一个指针为我们要改变它指向的对象
    let cur = head
    //定义一个指针记录将断开和上一级联系的对象
    let next = cur.next
    //循环条件为当我们要改变指向的值存在
while(cur){
    //使该对象断开和之前后一级的联系，指向前一级
    cur.next=per
    //使前一级对象变为我们记录好的要改变指向的对象
    per = cur
    //使我们要改变的对象为下一级
    cur = next
    //由于可能cur为链表的最后一项
    //最后一项的next属性为null,找null就会报错
    //所有我们要先判断next熟悉不为null，才能使next = next.next。
    if(next){
    next=next.next;
    }
}
//循环结束，cur为null,per为指针该变的最后一项，也就是新链表的前一项
return per
};